/**
 * Copyright (c) 2006-2012 Las Venturas Playground, LVP Mineground
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program.
 * If not, see <http://www.gnu.org/licenses/>.
 */

package mineground.entities.requests;

import mineground.util.Vector3D;

/**
 * Location requests for entities (players, blocks) have to be done on the server thread, so code
 * using it will have to be executed at a later pace. Code contained within the run() method will
 * be executed on the Server Thread, so keep operations to a minimum.
 */
public interface LocationRunnable {
    /**
     * Method to execute when the location is known, with a 3D vector passed containing the current
     * position of the entity.
     * 
     * @param location A vector containing the requested position.
     * @param pitch The pitch (vertical tilt) of the entity's location.
     * @param yaw The yaw (facing angle) of the entity's location.
     */
    public abstract void run(Vector3D location, float pitch, float yaw);
}
